Skip to content

message_passing: derive component_requirements#555

Open
gdadunashvili wants to merge 1 commit into
eclipse-score:mainfrom
gdadunashvili:dadu_component_requirements
Open

message_passing: derive component_requirements#555
gdadunashvili wants to merge 1 commit into
eclipse-score:mainfrom
gdadunashvili:dadu_component_requirements

Conversation

@gdadunashvili

Copy link
Copy Markdown
Member

No description provided.

@gdadunashvili gdadunashvili force-pushed the dadu_component_requirements branch from b3cd6c0 to 40fa793 Compare June 17, 2026 13:17
section "System Requirements" {

ScoreReq.CompReq SafetyCertifiedTransportMechanismUnderQNX {
description = "Under QNX, the message passing component shall use a safety-certified transport mechanism as the underlying IPC."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's basically the same statement as in the upper requirement. We should define here that we are using message passing.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We also should have a requirement what we use for linux to satisfy that this is OS abstracted

}

ScoreReq.CompReq OSProvidedSenderIdentity {
description = "The message passing server shall be able to identify the sender of each received message by the sender's OS-provided UID."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UID = user-id?
or unique id, if unique id, then is the question what unique id?

If user-id, then we need an aou that every process should have a different user-id, and we should link this here somehow.

}

ScoreReq.CompReq UnforgableSenderIdentity {
description = "The transport mechanism shall ensure that the UID used to identify a message, cannot be forged by the client."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This would then be a requirement towards the OS, no?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to my picture this would be an ExternalComponentRequirement

section "Behaviour Requirements" {

ScoreReq.CompReq ServerCallbacksAreSequential {
description = "The server shall serialize all callbacks belonging to the same IServer instance, such that no two such callbacks execute concurrently."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is an IServer instance?

}

ScoreReq.CompReq ServerProcessesSinglePendingRequest {
description = "The server shall not dispatch a new sent-with-reply message callback on a given IServerConnection until the preceding request has been replied to via `IServerConnection::Reply()`."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again IServerConnection, this sounds like implementation detail - I think what you did below with ´ClientConnection´ is maybe a little bit more abstract?

}

ScoreReq.CompReq ClientConnectionMaintainsStateMachine {
description = "The `ClientConnection` shall maintain a state machine with the states `Starting`, `Ready`, `Stopping`, and `Stopped`."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the allowed transitions between these states? Should we draw this in a state diagram?

}

ScoreReq.CompReq IServerStopListeningAPI {
description = "`IServer` shall provide a `StopListening` method that releases all registered callbacks and closes all active server connections."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really like this way of writing the API requirements, without exactly specifying the C++ API!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

2 participants